Developing a Consensus Algorithm Using Stepwise Refinement
نویسنده
چکیده
Consensus problems arise in any area of computing where distributed processes must come to a joint decision. Although solutions to consensus problems have similar aims, they vary according to the processor faults and network properties that must be taken into account, and modifying these assumptions will lead to different algorithms. Reasoning about consensus protocols is subtle, and correctness proofs are often informal. This paper gives a fully formal development and proof of a known consensus algorithm using the stepwise refinement method Event-B. This allows us to manage the complexity of the proof process by factoring the proof of correctness into a number of refinement steps, and to carry out the proof task concurrently with the development. During the development the processor faults and network properties on which the development steps rely are identified. The research outlined here is motivated by the observation that making different choices at these points may lead to alternative algorithms and proofs, leading to a refinement tree of algorithms with partially shared proofs.
منابع مشابه
Developing Logic Programs from Specifications Using Stepwise Refinement
In this paper we demonstrate a refinement calculus for logic programs, which is a framework for developing logic programs from specifications. The paper is written in a tutorial-style, using a running example to illustrate how the refinement calculus is used to develop logic programs. The paper also presents an overview of some of the advanced features of the calculus, including the introductio...
متن کاملAutomated Stepwise Refinement of Heap-Manipulating Code
Stepwise refinement is a well-studied technique for developing a program from an abstract description to a concrete implementation. This paper describes a system with automated tool support for refinement, powered by a stateof-the-art verification engine that uses an SMT solver. Unlike previous refinement systems, users of the presented system interact only via declarations in the programming l...
متن کاملTowards Verified Distributed Software Through Refinement of Formal Archetypes
This paper discusses experiments with a “model-based” approach for developing verified distributed systems in which program development is carried out by stepwise refinement: we encode, specifications and algorithm archetypes in the PVS theorem prover, carry out stepwise refinement and concomitant proofs, and obtain collections of verified algorithms encoded in PVS. Finally we transform algorit...
متن کاملFormalization of Incremental Simplex Algorithm by Stepwise Refinement
We present an Isabelle/HOL formalization and total correctness proof for incremental version of Simplex algorithm which is used in most state-of-the-art SMT solvers. Formalization relies on stepwise program and data refinement, starting from a simple specification, going trough a number of fine refinement steps, and ending up in a fully executable functional implementation. Symmetries present i...
متن کاملStepwise Development of Distributed Vertex Colouring
Verifying distributed algorithms is non trivial. A promising methodology is based on the Event B language and the refinement process ([1]) : it consists in redeveloping the algorithms by targeting a collection of required properties, using the refinement of models which preserves the properties of an abstract one in concrete ones. This approach has already been followed by Abrial et al for thei...
متن کامل